package sing.rabbit.consumer.usage;

import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;

/**
 * 区别于使用 @RabbitListener 注解方式，这里可以实现的方法里可以包含 Channel 参数，用于手动确认等操作。<br>
 * 需要搭配配置一个 {@link org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer SimpleMessageListenerContainer } 的 Bean，将本 Bean 配置到该 Container 中 <br>
 *
 * TODO ? ChannelAwareBatchMessageListener 这个是什么
 *
 * @author xing
 * @date 2022/9/7 18:21
 */
@Profile("sample_3")
// 按AOP思想，应该都交给容器管理
@Component
public class SimpleQueueListener3 implements ChannelAwareMessageListener {

    @Override
    public void onMessage(Message message, Channel channel) throws Exception {
        String msg = new String(message.getBody());
        System.out.println(" [x] Received '" + msg + "'");
        //手动确认
        //channel.basicNack();
    }

}
